package com.study.lihan.letcode;

import com.study.lihan.letcode.util.Util;

/*
* https://leetcode-cn.com/problems/next-permutation/
*递归
*
*
* 怎么移动数字====找到第一个非递增的位置
* 如果不存在怎么办
* 如果十位比小，513，直接交换
* 如果十位比各位大
* */
public class My31 {
    public static void main(String[] args) {

        int[] nums = {1,1,5};
        Solution31 solution31 = new Solution31();
        solution31.mynextPermutation(nums);
        Util.printArr(nums);
    }
}


class Solution31 {
    public void mynextPermutation(int[] nums) {
        if(nums == null || nums.length <2) return;
        int len = nums.length;
        int last =len-1;
        for(; last>0; last--){

            if(nums[last-1]>= nums[last])continue;
            int j = len-1;
//要想数变大，找一个比该位置数更大的数
            for(; j>=last && nums[j]<=nums[last-1];j--){
            }
            swap(nums,last-1,j);
             break;

        }
        for(int maxIndex=last,minIndex= len-1; minIndex>maxIndex; maxIndex++,minIndex--){
            swap(nums,maxIndex,minIndex);
        }

    }
    public void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }


    public void nextPermutation(int[] nums) {

    }
}